package org.neuedu.mp.entity.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL) //JSON 序列化的时候，把null值字段排除
@ApiModel("前后端统一返回数据格式")
public class ResponseVo {

    @ApiModelProperty("状态码，用于前端判断")
    private Integer code;
    @ApiModelProperty("分页总条数")
    private Long count;
    @ApiModelProperty("响应消息")
    private String msg;
    @ApiModelProperty("响应数据")
    private Object data;

    /**
     * 用于分页查询返回
     * @param count 总条数
     * @param data 分页集合数据
     * @return  layui table json 数据返回要求 code 的值必须为 0
     */
    public static ResponseVo page(Long count,Object data){
        return ResponseVo.builder().code(0).count(count).data(data).build();
    }

    /**
     *  操作成功，返回响应信息
     * @param msg  提示信息
     * @return
     */
    public static ResponseVo success(String msg){
        return ResponseVo.builder().code(0).msg(msg).build();
    }

    /**
     *  操作失败，返回响应信息
     * @param msg  提示信息
     * @return
     */
    public static ResponseVo fail(String msg){
        return ResponseVo.builder().code(0).msg(msg).build();
    }

    /**
     *  查询返回数据
     * @param data  需要提交到页面的数据
     * @return
     */
    public static ResponseVo data(Object data){
        return ResponseVo.builder().code(0).data(data).build();
    }
}
